// lib/api/dio_client.dart
import 'package:dio/dio.dart';
import 'package:shared_preferences/shared_preferences.dart';

import '../utils/app_constants.dart'; // 引入常量

class DioClient {
  static final DioClient _instance = DioClient._internal();
  late Dio _dio;

  factory DioClient() {
    return _instance;
  }

  DioClient._internal() {
    _dio = Dio(BaseOptions(
      baseUrl: AppConstants.baseUrl, // 使用定义的 baseUrl
      connectTimeout: const Duration(seconds: 5), // 连接超时5秒
      receiveTimeout: const Duration(seconds: 3), // 接收超时3秒
      headers: {
        'Content-Type': 'application/json', // 默认请求头
      },
    ));

    // 添加拦截器：用于在请求中添加 Token
    _dio.interceptors.add(InterceptorsWrapper(
      onRequest: (options, handler) async {
        final prefs = await SharedPreferences.getInstance();
        final token = prefs.getString(AppConstants.tokenKey);
        if (token != null && token.isNotEmpty) {
          options.headers['Authorization'] = 'Bearer $token'; // 添加 Token 到请求头
        }
        return handler.next(options);
      },
      onError: (DioException error, handler) {
        // 简单的错误处理
        if (error.response?.statusCode == 401) {
          print('认证失败或Token过期，请重新登录！');
          // TODO: 这里可以添加逻辑，例如跳转到登录页面
        }
        return handler.next(error);
      },
    ));
  }

  Dio get dio => _dio; // 提供 Dio 实例
}